package main
import "fmt"

//定义一个函数
func test(num int){
	fmt.Println(num)
}

//定义一个函数，把另一个函数作为形参：
func test02 (num1 int,num2 float32,testFunc func(int)){
	fmt.Println("------test02")
}

type myFunc func(int)
func test03 (num1 int,num2 float32,testFunc myFunc){
	fmt.Println("------test03")
}

//定义一个函数，求2个数的和、差
func test04(num1 int,num2 int)(int,int){
	result01 := num1 + num2
	result02 := num1 - num2
	return result01,result02
}

//定义一个函数，求2个数的和、差
func test05(num1 int,num2 int)(sum int,sub int){
	sum = num1 + num2
	sub = num1 - num2
	return
}

func main(){
	a := test
	fmt.Printf("a的类型是：%T,test函数的类型是：%T",a,test)

	//通过该变量对函数进行调用
	a(10)	//等价于 test(10)

	//调用test02函数
	test02(11,11.11,test)
	test02(22,22.22,a)

	//自定义数据类型：（相当于其别名）：给int类型起了别名叫myInt类型
	type myInt int
	var num1 myInt = 30
	fmt.Println("num1",num1)

	var num2 int = 30
	num2 = int(num1)	//虽然是别名，但是在go中编译识别的时候还是认为myInt不是一种数据类型

	fmt.Println("num2",num2)

	test03(33,33.33,a)

	aa,bb := test05(10,5)
	fmt.Println(aa,bb)
}